package com.sctvcloud.pingwu.http.retrofit.inf;

import com.sctvcloud.pingwu.application.Constances;
import com.sctvcloud.pingwu.beans.ADynamicsItem;
import com.sctvcloud.pingwu.beans.AFileItem;
import com.sctvcloud.pingwu.beans.AHomePageItem;
import com.sctvcloud.pingwu.beans.ARecomdList;
import com.sctvcloud.pingwu.beans.AdPicItem;
import com.sctvcloud.pingwu.beans.AddrInfo;
import com.sctvcloud.pingwu.beans.AddrInfoItem;
import com.sctvcloud.pingwu.beans.AdvertBean;
import com.sctvcloud.pingwu.beans.AdvertDataVo;
import com.sctvcloud.pingwu.beans.AdvertSpecialVo;
import com.sctvcloud.pingwu.beans.AnchorList;
import com.sctvcloud.pingwu.beans.AttitudesBean;
import com.sctvcloud.pingwu.beans.BranchBean;
import com.sctvcloud.pingwu.beans.ChatItem;
import com.sctvcloud.pingwu.beans.ChooseCityBean;
import com.sctvcloud.pingwu.beans.ChooseCityVo;
import com.sctvcloud.pingwu.beans.CircleVo;
import com.sctvcloud.pingwu.beans.ConvertRecordBean;
import com.sctvcloud.pingwu.beans.FCityItem;
import com.sctvcloud.pingwu.beans.FCityState;
import com.sctvcloud.pingwu.beans.FComment;
import com.sctvcloud.pingwu.beans.FLive;
import com.sctvcloud.pingwu.beans.FLiveDy;
import com.sctvcloud.pingwu.beans.FNews;
import com.sctvcloud.pingwu.beans.FOrganDetail;
import com.sctvcloud.pingwu.beans.FProgram;
import com.sctvcloud.pingwu.beans.FRebellion;
import com.sctvcloud.pingwu.beans.FScribeState;
import com.sctvcloud.pingwu.beans.FSubscribe;
import com.sctvcloud.pingwu.beans.FUsers;
import com.sctvcloud.pingwu.beans.FVersionInfo;
import com.sctvcloud.pingwu.beans.FocusColumn;
import com.sctvcloud.pingwu.beans.GoodsBean;
import com.sctvcloud.pingwu.beans.GoodsBeanInfo;
import com.sctvcloud.pingwu.beans.GovBean;
import com.sctvcloud.pingwu.beans.GovDetailBean;
import com.sctvcloud.pingwu.beans.GovItemBean;
import com.sctvcloud.pingwu.beans.HighRiseBean;
import com.sctvcloud.pingwu.beans.HighRiseVo;
import com.sctvcloud.pingwu.beans.HomePopular;
import com.sctvcloud.pingwu.beans.IntegralAddBean;
import com.sctvcloud.pingwu.beans.InvitationRuleVo;
import com.sctvcloud.pingwu.beans.LicenseKeyItem;
import com.sctvcloud.pingwu.beans.LiveAdvance;
import com.sctvcloud.pingwu.beans.LiveDynamic;
import com.sctvcloud.pingwu.beans.LiveItem;
import com.sctvcloud.pingwu.beans.LookBackBean;
import com.sctvcloud.pingwu.beans.LookBackDateBean;
import com.sctvcloud.pingwu.beans.MessageListVo;
import com.sctvcloud.pingwu.beans.MessageStateBean;
import com.sctvcloud.pingwu.beans.NewsClickBean;
import com.sctvcloud.pingwu.beans.NewsDate;
import com.sctvcloud.pingwu.beans.NewsItem;
import com.sctvcloud.pingwu.beans.NewsListClickVo;
import com.sctvcloud.pingwu.beans.PrizeImage;
import com.sctvcloud.pingwu.beans.RebllionCommitResult;
import com.sctvcloud.pingwu.beans.ReplyDetail;
import com.sctvcloud.pingwu.beans.ReportBean;
import com.sctvcloud.pingwu.beans.ResidualIntegral;
import com.sctvcloud.pingwu.beans.ScrollBean;
import com.sctvcloud.pingwu.beans.SearchKeyWords;
import com.sctvcloud.pingwu.beans.SearchResult;
import com.sctvcloud.pingwu.beans.ServiceBean;
import com.sctvcloud.pingwu.beans.ServiceConfigBean;
import com.sctvcloud.pingwu.beans.ServiceVo;
import com.sctvcloud.pingwu.beans.SignInfo;
import com.sctvcloud.pingwu.beans.ServiceCityListVo;
import com.sctvcloud.pingwu.beans.SingleResult;
import com.sctvcloud.pingwu.beans.SpecialInfo;
import com.sctvcloud.pingwu.beans.TodayNews;
import com.sctvcloud.pingwu.beans.TopicContent;
import com.sctvcloud.pingwu.beans.TopicVo;
import com.sctvcloud.pingwu.beans.TvLivingList;
import com.sctvcloud.pingwu.beans.UserInfoBean;
import com.sctvcloud.pingwu.beans.VoteInfo;
import com.sctvcloud.pingwu.beans.VoteOption;
import com.sctvcloud.pingwu.http.INetCallback;
import com.sctvcloud.pingwu.http.NetResponseObject;
import com.sctvcloud.pingwu.http.NetResponseObjectArray;

import java.util.Map;

import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;

/**
 * Created by Administrator on 2017/7/6.
 *
 * 数据处理
 *
 */
public interface NetRetrofitInfs {

    /**
     * 获取object型的数据
     *
     * @param <T> the type parameter
     * @param url the url
     * @return obj null param
     */
    @GET
    <T> Call<NetResponseObject<T>> getObjNullParam(@Url String url);

    /**
     * 获取列表型的数据
     *
     * @param <T> the type parameter
     * @param url the url
     * @return array null param
     */
    @GET
    <T> Call<NetResponseObjectArray<T>> getArrayNullParam(@Url String url);

    /**
     * 获取object型的数据
     *
     * @param <T> the type parameter
     * @param url the url
     * @return obj null param p
     */
    @GET("{uu}")
    <T> Call<NetResponseObject<T>> getObjNullParamP(@Path("uu") String url);

    /**
     * 获取列表型的数据
     *
     * @param <T> the type parameter
     * @param url the url
     * @return array null param p
     */
    @GET("{uu}")
    <T> Call<NetResponseObjectArray<T>> getArrayNullParamP(@Path("uu") String url);

    /**
     * Post obj null param call.
     *
     * @param <T>    the type parameter
     * @param method the method
     * @return the call
     */
    @POST("{uu}")
    <T> Call<NetResponseObject<T>> postObjNullParam(@Path("uu") String method);

    /**
     * Post array null param call.
     *
     * @param <T>    the type parameter
     * @param method the method
     * @return the call
     */
    @POST("{uu}")
    <T> Call<NetResponseObjectArray<T>> postArrayNullParam(@Path("uu") String method);

    /**
     * Post obj param call.
     *
     * @param <T>    the type parameter
     * @param method the method
     * @param param  the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("{uu}")
    <T> Call<NetResponseObject<T>> postObjParam(@Path("uu") String method, @FieldMap Map<String, Object> param);

    /**
     * Post array param call.
     *
     * @param <T>    the type parameter
     * @param method the method
     * @param param  the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("{uu}")
    <T> Call<NetResponseObjectArray<T>> postArrayParam(@Path("uu") String method, @FieldMap Map<String, Object> param);

    /**
     * Gets channel array.
     *
     * @param method the method
     * @return the channel array
     */
    @GET
    Call<NetResponseObjectArray<FocusColumn>> getChannelArray(@Url String method);

    /**
     * Gets news array.
     *
     * @param method the method
     * @return the news array
     */
    @GET
    Call<NetResponseObjectArray<NewsItem>> getNewsArray(@Url String method);

    /**
     * Gets news date.
     *
     * @param method the method
     * @return the news date
     */
    @GET
    Call<NetResponseObjectArray<NewsDate>> getNewsDate(@Url String method);

    /**
     * Gets live array.
     *
     * @param method the method
     * @return the live array
     */
    @GET
    Call<NetResponseObjectArray<LiveItem>> getLiveArray(@Url String method);

    /**
     * Gets program array.
     *
     * @param method the method
     * @return the program array
     */
    @GET
    Call<NetResponseObjectArray<FProgram>> getProgramArray(@Url String method);

    /**
     * Gets dynamics page.
     *
     * @param method the method
     * @return the dynamics page
     */
    @GET
    Call<NetResponseObjectArray<ADynamicsItem>> getDynamicsPage(@Url String method);

    /**
     * Gets anchor list.
     *
     * @param method the method
     * @return the anchor list
     */
    @GET
    Call<NetResponseObject<AnchorList>> getAnchorList(@Url String method);

    /**
     * Gets a home page list.
     *
     * @param method the method
     * @return the a home page list
     */
    @GET
    Call<NetResponseObject<AHomePageItem>> getAHomePageList(@Url String method);

    /**
     * Gets recomm list.
     *
     * @param method the method
     * @return the recomm list
     */
    @GET
    Call<NetResponseObject<ARecomdList>> getRecommList(@Url String method);

    /**
     * Gets rebellion array.
     *
     * @param method the method
     * @return the rebellion array
     */
    @GET
    Call<NetResponseObjectArray<FRebellion>> getRebellionArray(@Url String method);

    /**
     * Gets program list.
     *
     * @param method the method
     * @return the program list
     */
    @GET
    Call<NetResponseObjectArray<FProgram>> getProgramList(@Url String method);

    /**
     * Gets state list.
     *
     * @param method the method
     * @return the state list
     */
    @GET
    Call<NetResponseObject<FCityItem>> getStateList(@Url String method);

    /**
     * Gets organ list.
     *
     * @param method the method
     * @return the organ list
     */
    @GET
    Call<NetResponseObject<FOrganDetail>> getOrganList(@Url String method);

    /**
     * Gets today news.
     *
     * @param method the method
     * @return the today news
     */
    @GET
    Call<NetResponseObject<TodayNews>> getTodayNews(@Url String method);

    /**
     * Gets special.
     *
     * @param method the method
     * @return the special
     */
    @GET
    Call<NetResponseObject<SpecialInfo>> getSpecial(@Url String method);


    /**
     * Gets subscribe list page.
     *
     * @param method the method
     * @return the subscribe list page
     */
    @GET
    Call<NetResponseObjectArray<FSubscribe>> getSubscribeListPage(@Url String method);


    /**
     * Gets ad list.
     *
     * @param method the method
     * @return the ad list
     */
    @GET
    Call<NetResponseObject<AdPicItem>> getAdList(@Url String method);


    /**
     * Gets version.
     *
     * @param method the method
     * @return the version
     */
    @GET
    Call<NetResponseObject<FVersionInfo>> getVersion(@Url String method);

    /**
     * Gets ad info.
     *
     * @param method the method
     * @return the ad info
     */
    @GET
    Call<NetResponseObject<AdvertDataVo>> getAdInfo(@Url String method);

    /**
     * Gets high rise list.
     *
     * @param method the method
     * @return the high rise list
     */
    @GET
    Call<NetResponseObject<HighRiseBean>> getHighRiseList(@Url String method);

    /**
     * Post get single call.
     *
     * @param method the method
     * @param param  the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("{method}")
    Call<NetResponseObject<SingleResult>> postGetSingle(@Path("method") String method, @FieldMap Map<String, Object> param);

    /**
     * Post login call.
     * 登陆请求
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("accountLogin")
    Call<NetResponseObject<FUsers>> postLogin(@FieldMap Map<String, Object> param);

    /**
     * Post rebellion call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("sendDiscloseInfo")
    Call<NetResponseObject<RebllionCommitResult>> postRebellion(@FieldMap Map<String, Object> param);

    /**
     * Post anchor call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("sendAnchorTimeLine")
    Call<NetResponseObject<SingleResult>> postAnchor(@FieldMap Map<String, Object> param);

    /**
     * Modify avatar call.
     *
     * @param file the file
     * @return the call
     */
    @POST("reviseUserAvatar")
    Call<NetResponseObject<SingleResult>> modifyAvatar(@Body RequestBody file);

    /**
     * Gets user organ list.
     *
     * @param param the param
     * @return the user organ list
     */
    @FormUrlEncoded
    @POST("getAccountInstitutions")
    Call<NetResponseObjectArray<FCityState>> getUserOrganList(@FieldMap Map<String, Object> param);

    /**
     * Gets subscribe state.
     *
     * @param param the param
     * @return the subscribe state
     */
    @FormUrlEncoded
    @POST("accountSubscibed")
    Call<NetResponseObject<FScribeState>> getSubscribeState(@FieldMap Map<String, Object> param);

    /**
     * Gets search result.
     *
     * @param param the param
     * @return the search result
     */
    @FormUrlEncoded
    @POST("keywordOptionSearch")
    Call<NetResponseObject<SearchResult>> getSearchResult(@FieldMap Map<String, Object> param);


    /**
     * Keyword option search fulltext call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("keywordOptionSearchFulltext")
    Call<NetResponseObject<SearchResult>> keywordOptionSearchFulltext(@FieldMap Map<String, Object> param);

    /**
     * Gets live config.
     *
     * @param param the param
     * @return the live config
     */
    @FormUrlEncoded
    @POST("liveurl")
    Call<NetResponseObject<LiveAdvance>> getLiveConfig(@FieldMap Map<String, Object> param);

    /**
     * Gets licensekey.
     *
     * @param param the param
     * @return the licensekey
     */
    @FormUrlEncoded
    @POST("getLicensekey")
    Call<NetResponseObject<LicenseKeyItem>> getLicensekey(@FieldMap Map<String, Object> param);

    /**
     * Gets hot keyword.
     *
     * @param param the param
     * @return the hot keyword
     */
    @FormUrlEncoded
    @POST("getHotKeyword")
    Call<NetResponseObject<SearchKeyWords>> getHotKeyword(@FieldMap Map<String, Object> param);

    /**
     * Gets comment array.
     *
     * @param method the method
     * @return the comment array
     */
    @GET
    Call<NetResponseObjectArray<FComment>> getCommentArray(@Url String method);

    /**
     * Gets comment page.
     *
     * @param method the method
     * @return the comment page
     */
    @GET
    Call<NetResponseObjectArray<FComment>> getCommentPage(@Url String method);

    /**
     * Gets string content.
     *
     * @param url the url
     * @return the string content
     */
    @GET
    Call<String> getStringContent(@Url String url);


    /**
     * Gets vote info.
     *
     * @param param the param
     * @return the vote info
     */
    @FormUrlEncoded
    @POST("getVoteListInfo")
    Call<NetResponseObject<VoteInfo>> getVoteInfo(@FieldMap Map<String, Object> param);

    /**
     * Gets vote info.
     *
     * @param url   the url
     * @param param the param
     * @return the vote info
     */
    @FormUrlEncoded
    @POST
    Call<NetResponseObject<VoteInfo>> getVoteInfo(@Url String url, @FieldMap Map<String, Object> param);

    /**
     * Gets news info.
     *
     * @param method the method
     * @return the news info
     */
    @GET
    Call<NetResponseObject<FNews>> getNewsInfo(@Url String method);

    /**
     * Gets tv living list.
     *
     * @param method the method
     * @return the tv living list
     */
    @GET
    Call<NetResponseObject<TvLivingList>> getTvLivingList(@Url String method);

    /**
     * Gets live info.
     *
     * @param method the method
     * @return the live info
     */
    @GET
    Call<NetResponseObject<FLive>> getLiveInfo(@Url String method);

    /**
     * Gets home popular.
     *
     * @param method the method
     * @return the home popular
     */
    @GET
    Call<NetResponseObject<HomePopular>> getHomePopular(@Url String method);

    /**
     * Gets live page.
     *
     * @param pageUrl the page url
     * @return the live page
     */
    @GET
    Call<NetResponseObjectArray<LiveDynamic>> getLivePage(@Url String pageUrl);

    /**
     * Gets chat page.
     *
     * @param pageUrl the page url
     * @return the chat page
     */
    @GET
    Call<NetResponseObjectArray<ChatItem>> getChatPage(@Url String pageUrl);

    /**
     * Gets live list page.
     *
     * @param pageUrl the page url
     * @return the live list page
     */
    @GET
    Call<NetResponseObjectArray<LiveItem>> getLiveListPage(@Url String pageUrl);

    /**
     * Gets comment list.
     *
     * @param sourceId    the source id
     * @param requestType the request type
     * @param capacity    the capacity
     * @param index       the index
     * @return the comment list
     */
    @FormUrlEncoded
    @POST("getCommentList")
    Call<NetResponseObjectArray<FComment>> getCommentList(@Field("sourceId") String sourceId
            , @Field("requestType") int requestType, @Field("capacity") int capacity
            , @Field("index") int index);

    /**
     * Gets comment list.
     *
     * @param url         the url
     * @param sourceId    the source id
     * @param requestType the request type
     * @param capacity    the capacity
     * @param index       the index
     * @return the comment list
     */
    @FormUrlEncoded
    @POST
    Call<NetResponseObjectArray<FComment>> getCommentList(@Url String url, @Field("sourceId") String sourceId
            , @Field("requestType") int requestType, @Field("capacity") int capacity
            , @Field("index") int index);

    /**
     * Gets new comment list.
     *
     * @param sourceId    the source id
     * @param requestType the request type
     * @return the new comment list
     */
    @FormUrlEncoded
    @POST("getNewestCommentList")
    Call<NetResponseObjectArray<FComment>> getNewCommentList(@Field("sourceId") String sourceId
            , @Field("requestType") int requestType);

    /**
     * Gets live chat list.
     *
     * @param sourceId the source id
     * @return the live chat list
     */
    @FormUrlEncoded
    @POST("getChatCommentList")
    Call<NetResponseObjectArray<ChatItem>> getLiveChatList(@Field("liveId") String sourceId);

    /**
     * Gets live chat list.
     *
     * @param url      the url
     * @param sourceId the source id
     * @return the live chat list
     */
    @FormUrlEncoded
    @POST
    Call<NetResponseObjectArray<ChatItem>> getLiveChatList(@Url String url, @Field("liveId") String sourceId);


    /**
     * Account vote call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("accountVote")
    Call<NetResponseObjectArray<VoteOption>> accountVote(@FieldMap Map<String, Object> param);

    /**
     * Gets relate news.
     *
     * @param param      the param
     * @param newsId     the news id
     * @param siteNumber the site number
     * @return the relate news
     */
    @FormUrlEncoded
    @POST("getRelateNewsList")
    Call<NetResponseObjectArray<NewsItem>> getRelateNews(@Field("keyword") String param
            , @Field("newsId") String newsId, @Field(Constances.SITE_NET_KEY) String siteNumber);

    /**
     * Gets relate news.
     *
     * @param url        the url
     * @param param      the param
     * @param newsId     the news id
     * @param siteNumber the site number
     * @return the relate news
     */
    @FormUrlEncoded
    @POST
    Call<NetResponseObjectArray<NewsItem>> getRelateNews(@Url String url, @Field("keyword") String param
            , @Field("newsId") String newsId, @Field(Constances.SITE_NET_KEY) String siteNumber);

    /**
     * Gets live dynamic list.
     *
     * @param roomid the roomid
     * @return the live dynamic list
     */
    @FormUrlEncoded
    @POST("liveroom")
    Call<NetResponseObjectArray<FLiveDy>> getLiveDynamicList(@Field("roomid") String roomid);

    /**
     * 获取实时动态列表.
     *
     * @param url    the url
     * @param roomid the roomid
     * @return the live dynamic list
     */
    @FormUrlEncoded
    @POST
    Call<NetResponseObjectArray<FLiveDy>> getLiveDynamicList(@Url String url, @Field("roomid") String roomid);

    /**
     * 获取时间新闻列表
     *
     * @param param the param
     * @return the timeline list
     */
    @FormUrlEncoded
    @POST("getTimelineList")
    Call<NetResponseObjectArray<ADynamicsItem>> getTimelineList(@FieldMap Map<String, Object> param);

    /**
     * 获取主播动态
     *
     * @param param the param
     * @return the anchor relate news list
     */
    @FormUrlEncoded
    @POST("getAnchorRelateNews")
    Call<NetResponseObjectArray<NewsItem>> getAnchorRelateNewsList(@FieldMap Map<String, Object> param);

    /**
     * 获取主播列表.
     *
     * @param param the param
     * @return the radio host doc
     */
    @FormUrlEncoded
    @POST("getRadioHostDoc")
    Call<NetResponseObjectArray<AFileItem>> getRadioHostDoc(@FieldMap Map<String, Object> param);

    /**
     * 获取主播圈点赞.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("attitudes")
    Call<NetResponseObject<SingleResult>> doUp(@FieldMap Map<String, Object> param);


    /**
     * 获取我关注的主播列表.
     *
     * @param param the param
     * @return the my anchor dynamic list
     */
    @FormUrlEncoded
    @POST("getMyAnchorTimeLines")
    Call<NetResponseObjectArray<ADynamicsItem>> getMyAnchorDynamicList(@FieldMap Map<String, Object> param);

    /**
     * 上传图片.
     *
     * @param method the method
     * @param file   the file
     * @return the call
     */
    @POST("{uu}")
    Call<NetResponseObject<SingleResult>> uploading(@Path("uu") String method, @Body RequestBody file);

    /**
     * 上传图片.
     *
     * @param method   the method
     * @param fieldMap the field map
     * @param fileMap  the file map
     * @return the call
     */
    @Multipart
    @POST("{uu}")
    Call<NetResponseObject<SingleResult>> uploading2(@Path("uu") String method
            , @QueryMap Map<String, Object> fieldMap, @Part MultipartBody.Part fileMap);

    /**
     * 获取商品信息.
     *
     * @param method the method
     * @return the commodity info
     */
    @GET
    Call<NetResponseObject<GoodsBeanInfo>> getCommodityInfo(@Url String method);

    /**
     * Post get message state call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("getIfNews")
    Call<NetResponseObject<MessageStateBean>> postGetMessageState(@FieldMap Map<String, Object> param);

    /**
     * Post get message list call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("getMsgList")
    Call<NetResponseObject<MessageListVo>> postGetMessageList(@FieldMap Map<String, Object> param);

    /**
     * Post clean message call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("clearMsgList")
    Call<NetResponseObject<SingleResult>> postCleanMessage(@FieldMap Map<String, Object> param);

    /**
     * Post set read message call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("setMsgRead")
    Call<NetResponseObject<SingleResult>> postSetReadMessage(@FieldMap Map<String, Object> param);

    /**
     * Post add integral call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("addIntegral")
    Call<NetResponseObject<IntegralAddBean>> postAddIntegral(@FieldMap Map<String, Object> param);

    /**
     * Post get user data call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("getUserInfo")
    Call<NetResponseObject<UserInfoBean>> postGetUserData(@FieldMap Map<String, Object> param);

    /**
     * Gets order list.
     *
     * @param userId    the user id
     * @param pageIndex the page index
     * @param token     the token
     * @return the order list
     */
    @FormUrlEncoded
    @POST("getOrderList")
    Call<NetResponseObjectArray<ConvertRecordBean>> getOrderList(@Field("userId") String userId
            , @Field("pageIndex") int pageIndex, @Field("token") String token);

    /**
     * Gets sign info.
     *
     * @param userId the user id
     * @param token  the token
     * @return the sign info
     */
    @FormUrlEncoded
    @POST("getSignInfo")
    Call<NetResponseObject<SignInfo>> getSignInfo(@Field("userId") String userId
            , @Field("token") String token);

    /**
     * Gets addr list.
     *
     * @param userId the user id
     * @param token  the token
     * @return the addr list
     */
    @FormUrlEncoded
    @POST("getAddrList")
    Call<NetResponseObjectArray<AddrInfo>> getAddrList(@Field("userId") String userId
            , @Field("token") String token);

    /**
     * Add addr info call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("addAddrInfo")
    Call<NetResponseObject<AddrInfoItem>> addAddrInfo(@FieldMap Map<String, Object> param);

    /**
     * Sets default addr.
     *
     * @param param the param
     * @return the default addr
     */
    @FormUrlEncoded
    @POST("setDefalutUserAddress")
    Call<NetResponseObject<SingleResult>> setDefaultAddr(@FieldMap Map<String, Object> param);

    /**
     * Add goods order call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("addGoodsOrder")
    Call<NetResponseObject<ResidualIntegral>> addGoodsOrder(@FieldMap Map<String, Object> param);

    /**
     * Gets invitation rule list.
     *
     * @param method the method
     * @return the invitation rule list
     */
    @GET
    Call<NetResponseObject<InvitationRuleVo>> getInvitationRuleList(@Url String method);

    /**
     * Gets new or living click.
     *
     * @param param the param
     * @return the new or living click
     */
    @FormUrlEncoded
    @POST("getViews")
    Call<NetResponseObject<NewsClickBean>> getNewOrLivingClick( @FieldMap Map<String, Object> param);

    /**
     * Add new or living click call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("addViews")
    Call<NetResponseObject<SingleResult>> addNewOrLivingClick( @FieldMap Map<String, Object> param);

    /**
     * Gets service city list.
     *
     * @param method the method
     * @return the service city list
     */
    @GET
    Call<NetResponseObject<ServiceCityListVo>> getServiceCityList(@Url String method);

    /**
     * Check invitation code call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("checkCode")
    Call<NetResponseObject<SingleResult>> checkInvitationCode( @FieldMap Map<String, Object> param);

    /**
     * Gets service config.
     *
     * @param method the method
     * @return the service config
     */
    @GET
    Call<NetResponseObject<ServiceConfigBean>> getServiceConfig(@Url String method);

    /**
     * Gets city list.
     * 获取城市列表
     * @param method the method
     * @return the city list
     */
    @GET
    Call<NetResponseObject<ChooseCityVo>> getCityList(@Url String method);

    /**
     * Add user operate call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("addUserOperate")
    Call<NetResponseObject<SingleResult>> addUserOperate(@FieldMap Map<String, Object> param);


    /**
     * Add user online call.
     *
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("addUserOnline")
    Call<NetResponseObject<SingleResult>> addUserOnline(@FieldMap Map<String, Object> param);


    /**
     * Gets short videos.
     * 获取短视频
     * @param param the param
     * @return the short videos
     */
    @FormUrlEncoded
    @POST("getMoreVideos")
    Call<NetResponseObjectArray<NewsItem>> getShortVideos(@FieldMap Map<String, Object> param);

    /**
     * Gets topicisclose list.
     *
     * @param param the param
     * @return the topicisclose list
     */
    @FormUrlEncoded
    @POST("findTopicDiscloseInfo")
    Call<NetResponseObjectArray<FRebellion>> getTopiciscloseList(@FieldMap Map<String, Object> param);

    /**
     * Gets wenzheng.
     * 获取问政
     * @param param the param
     * @return the wenzheng
     */
    @FormUrlEncoded
    @POST("ext/politick/list")
    Call<NetResponseObjectArray<FRebellion>> getWenzheng(@FieldMap Map<String, Object> param);


    /**
     * Post wenzheng call.
     * 问政请求
     * @param param the param
     * @return the call
     */
    @FormUrlEncoded
    @POST("ext/politick/submit")
    Call<NetResponseObject<RebllionCommitResult>> postWenzheng(@FieldMap Map<String, Object> param);

    /**
     * Gets reply detail.
     *
     * @param param the param
     * @return the reply detail
     */
    @FormUrlEncoded
    @POST("ext/politick/detail")
    Call<NetResponseObject<ReplyDetail>> getReplyDetail(@FieldMap Map<String, Object> param);

    /**
     * Gets prize img.
     * 获取封面图
     * @param param the param
     * @return the prize img
     */
    @FormUrlEncoded
    @POST("finPrizeImage")
    Call<NetResponseObject<PrizeImage>> getPrizeImg(@FieldMap Map<String, Object> param);

    /**
     * Gets branch.
     *
     * @param param the param
     * @return the branch
     */
    @FormUrlEncoded
    @POST("ext/politick/branchList")
    Call<NetResponseObject<BranchBean>> getBranch(@FieldMap Map<String, Object> param);


    /**
     * Gets topic list.
     *
     * @param param the param
     * @return the topic list
     */
    @FormUrlEncoded
    @POST("getTopicList")
    Call<NetResponseObject<TopicVo>> getTopicList(@FieldMap Map<String, Object> param);


    /**
     * Gets attitudes.
     *
     * @param param the param
     * @return the attitudes
     */
    @FormUrlEncoded
    @POST("getAttitudes")
    Call<NetResponseObject<AttitudesBean>> getAttitudes(@FieldMap Map<String, Object> param);

    /**
     * Gets service data.
     * 获取服务信息
     * @param param the param
     * @return the service data
     */
    @FormUrlEncoded
    @POST("getThirdServiceList")
    Call<NetResponseObject<ServiceVo>> getServiceData(@FieldMap Map<String, Object> param);


    /**
     * Gets scroll list.
     * 获取滚动列表
     * @param param the param
     * @return the scroll list
     */
    @FormUrlEncoded
    @POST("getScrollList")
    Call<NetResponseObject<ScrollBean>> getScrollList(@FieldMap Map<String, Object> param);

    /**
     * Gets report url.
     * 获取报道地址
     * @param param the param
     * @return the report url
     */
    @FormUrlEncoded
    @POST("getReportURL")
    Call<NetResponseObject<ReportBean>> getReportURL(@FieldMap Map<String, Object> param);

    /**
     * Gets gov list.
     * 获取政府列表
     * @param param the param
     * @return the gov list
     */
    @FormUrlEncoded
    @POST("getOrgInfoList")
    Call<NetResponseObject<GovBean>> getGovList(@FieldMap Map<String, Object> param);

    /**
     * Gets org infos.
     * 获取组织信息
     * @param param the param
     * @return the org infos
     */
    @FormUrlEncoded
    @POST("getOrgInfos")
    Call<NetResponseObject<GovDetailBean>> getOrgInfos(@FieldMap Map<String, Object> param);

    /**
     * Gets views list.
     * 获取视图列表
     * @param newsIds the news ids
     * @return the views list
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @POST("getViewsList")
    Call<NetResponseObject<NewsListClickVo>> getViewsList(@Body RequestBody newsIds);

    /**
     * Gets look back news program list.
     * 获取回顾新闻节目列表
     * @param method the method
     * @return the look back news program list
     */
    @GET
    Call<NetResponseObjectArray<LookBackBean>> getLookBackNewsProgramList(@Url String method);

    /**
     * 获取回看集合.
     *
     * @param method the method
     * @return the look back news array
     */
    @GET
    Call<NetResponseObjectArray<FProgram>> getLookBackNewsArray(@Url String method);

    /**
     * 获取回看数据.
     *
     * @param method the method
     * @return the look back news date
     */
    @GET
    Call<NetResponseObject<LookBackDateBean>> getLookBackNewsDate(@Url String method);

    /**
     * 获取三台圈政务圈列表.
     *
     * @param method the method
     * @return the circle list
     */
    @GET
    Call<NetResponseObject<CircleVo>> getCircleList(@Url String method);


    @FormUrlEncoded
    @POST("findAdvertSpecialList")
    Call<NetResponseObject<AdvertSpecialVo>> findAdvertSpecialList(@FieldMap Map<String, Object> param);

}
